package com.qiguliuxing.dts.service.system;

import com.qiguliuxing.dts.core.redis.RedisServiceUtil;

import java.math.BigDecimal;

/**
 * 配置基类，该类实际持有所有的配置，子类只是提供代理访问方法
 */
public abstract class BaseConfig {

	/**
	 * 添加配置到redis中
	 *
	 * @param key
	 * @param value
	 */
	public static void addConfig(String key, String value) {
		RedisServiceUtil.set(key, value);
	}

	/**
	 * 重载配置,传入子类的prefix
	 */
	public static void reloadConfig(String prefix) {
		ConfigService.getSystemConfigService().reloadConfig(prefix);
	}

	/**
	 * 按String类型获取配置值
	 *
	 * @param keyName
	 * @return
	 */
	protected static String getConfig(String keyName) {
		return RedisServiceUtil.get(keyName);
	}

	/**
	 * 以Integer类型获取配置值
	 *
	 * @param keyName
	 * @return
	 */
	protected static Integer getConfigInt(String keyName) {
		return Integer.parseInt(getConfig(keyName));
	}

	protected static BigDecimal getConfigBigDecimal(String keyName) {
		return new BigDecimal(getConfig(keyName));
	}

	/**
	 * 以BigDecimal类型获取配置值
	 *
	 * @param keyName
	 * @return
	 */
	protected static BigDecimal getConfigBigDec(String keyName) {
		return new BigDecimal(getConfig(keyName));
	}

	/**
	 * 子类实现该方法，并告知父类配置前缀，该前缀用来索引配置组用于简化访问和按组重读配置
	 *
	 * @return
	 */
	abstract String getPrefix();
}
